Autonomous database management system

ABSTRACT

A database management system receives a user request for provisioning a database, autonomously selects a datacenter for provisioning the database based at least on a first pre-defined rule, autonomously selects at least one cluster in the datacenter based at least on a second pre-defined rule, determines a network location of each of the at least one cluster, and provisions the database on each of the at least one cluster using the network location of each of the at least one cluster.

CROSS-REFERENCE TO RELATED APPLICATIONS

This is a non-provisional of U.S. Provisional Application No.63/292,846, filed on Dec. 22, 2021, the entirety of which isincorporated by reference herein.

BACKGROUND

Virtual computing systems are widely used in a variety of applications.Virtual computing systems include one or more host machines running oneor more virtual machines and other entities (e.g., containers)concurrently. Modern virtual computing systems allow several operatingsystems and several software applications to be safely run at the sametime, thereby increasing resource utilization and performanceefficiency. However, the present-day virtual computing systems havelimitations due to their configuration and the way they operate.

SUMMARY

In accordance with some embodiments of the present disclosure, a methodis disclosed. The method includes receiving, by a processor of adatabase management system, a user request for provisioning a database,autonomously selecting, by the processor, a datacenter for provisioningthe database based at least on a first pre-defined rule, autonomouslyselecting, by the processor, at least one cluster in the datacenterbased at least on a second pre-defined rule, determining, by theprocessor, a network location of each of the at least one cluster, andprovisioning, by the processor, the database on each of the at least onecluster using the network of each of the at least one cluster.

In accordance with some embodiments of the present disclosure, a systemis disclosed. The system includes a memory having computer-readableinstructions stored thereon and a processor of a database managementsystem executing the computer-readable instructions to receive a userrequest to provision a database, autonomously select a datacenter toprovision the database based at least on a first pre-defined rule,autonomously select at least one cluster in the datacenter based atleast on a second pre-defined rule, determine a network location of eachof the at least one cluster, and provision the database on each of theat least one cluster using the network location of each of the at leastone cluster.

In accordance with some embodiments of the present disclosure, anon-transitory computer-readable medium having computer-readableinstructions stored thereon is disclosed. The computer-readableinstructions when executed by a processor of a database managementsystem cause the processor to: receive a user request to provision adatabase, autonomously select a datacenter to provision the databasebased at least on a first pre-defined rule, autonomously select at leastone cluster in the datacenter based at least on a second pre-definedrule, determine a network location of each of the at least one cluster,and provision the database on each of the at least one cluster using thenetwork location of each of the at least one cluster.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an example block diagram showing additional details of thedatabase system of FIG. 1 , in accordance with some embodiments of thepresent disclosure.

FIG. 2 is an example block diagram of a cluster of the database systemof FIG. 1 , in accordance with some embodiments of the presentdisclosure.

FIG. 3 is an example block diagram of an example database managementsystem of the database system of FIG. 1 , in accordance with someembodiments of the present disclosure.

FIG. 4 is an example flowchart outlining operations of the databasemanagement system of FIG. 3 in autonomously deciding a location forprovisioning a database, in accordance with some embodiments of thepresent disclosure.

FIG. 5 is an example flowchart outlining operations of the databasemanagement system of FIG. 3 in autonomously selecting one or moreclusters for a database, in accordance with some embodiments of thepresent disclosure.

FIG. 6 is an example flowchart outlining operations of the databasemanagement system of FIG. 3 in autonomously monitoring the suitabilityof a cluster for a particular database, in accordance with someembodiments of the present disclosure.

The foregoing and other features of the present disclosure will becomeapparent from the following description and appended claims, taken inconjunction with the accompanying drawings. Understanding that thesedrawings depict only several embodiments in accordance with thedisclosure and are therefore, not to be considered limiting of itsscope, the disclosure will be described with additional specificity anddetail through use of the accompanying drawings.

DETAILED DESCRIPTION

In the following detailed description, reference is made to theaccompanying drawings, which form a part hereof. In the drawings,similar symbols typically identify similar components, unless contextdictates otherwise. The illustrative embodiments described in thedetailed description, drawings, and claims are not meant to be limiting.Other embodiments may be utilized, and other changes may be made,without departing from the spirit or scope of the subject matterpresented here. It will be readily understood that the aspects of thepresent disclosure, as generally described herein, and illustrated inthe figures, can be arranged, substituted, combined, and designed in awide variety of different configurations, all of which are explicitlycontemplated and made part of this disclosure.

The present disclosure is generally directed to a virtual computingsystem having a plurality of clusters, with each of the plurality ofclusters having a plurality of nodes. Each of the plurality of nodesincludes one or more virtual machines and other entities managed by aninstance of a monitor such as a hypervisor. These and other componentsmay be part of a datacenter, which may be managed by a user (e.g., anadministrator or other authorized personnel). A distributed storagesystem, for providing storage and protection capabilities, is associatedwith the virtual computing system. The virtual computing system may beconfigured for providing database management services. For example, atleast some of the one or more virtual machines within the virtualcomputing system may be configured as database virtual machines forstoring one or more databases. These databases may be managed by adatabase management system. The database management system may provide aplurality of database services.

Referring to FIG. 1 , an example block diagram of a database system 100is shown, in accordance with some embodiments of the present disclosure.The database system 100 may be configured to manage databases spreadacross multiple clusters in a virtual computing system. In someembodiments, the multiple clusters may be spread across one or moredatacenters of the virtual computing system. For example, and as shownin FIG. 1 , the database system 100 may include a datacenter 105 and adatacenter 110. Although only two datacenters are shown in FIG. 1 , thedatabase system 100 may include a single datacenter or more than twodatacenters.

Further, in some embodiments, either or both of the datacenter 105and/or the datacenter 110 may be part of an on-premise environment. Inother embodiments, either or both of the datacenter 105 and/or thedatacenter 110 may be part of a cloud environment (e.g., public cloud,private cloud, hybrid cloud). In an “on-premise” environment, resources(e.g., databases) may be deployed locally (e.g., in-house) on anenterprise's computers and servers, and be managed internally. In acloud environment, resources (e.g., databases) may be hosted by aservice provider and may be accessed via a network (e.g., the internet)using, for example, a web-based browser. In some embodiments, theservice provider may be associated with the enterprise of the on-premiseenvironment. In other words, in some embodiments, the cloud environmentmay be managed by the enterprise managing the on-premise environment. Insome embodiments, the cloud environment may be managed by a third-partysite provider. The cloud environment, may thus in some embodiments, be apublic cloud (e.g., Amazon Web Services, Microsoft Azure, Google Cloud,etc.), a private cloud (e.g., cloud managed by a particular enterprisefor their own use), or a hybrid cloud (e.g., a combination of public andprivate clouds).

Additionally, in some embodiments, the datacenters 105 and 110 may begeographically located in the same location, while in other embodiments,those datacenters may be in different geographical locations. Forexample, in some embodiments, the datacenters 105 and 110 may be locatedin the same or different cities, same or different states, same ordifferent countries, same or different continents, etc. The term“geographical location” may be defined based on any physical features ofan area. The database system 100 may, thus, be configured to managedatabases stored in the datacenters 105 and 110. In some embodiments,the datacenter 105 and the datacenter 110 may be part of one or moreavailability zones and/or all-availability groups.

Each of the datacenters 105 and 110 may include one or more clusters.For example, the datacenter 105 may include clusters 115, 120, 125,while the datacenter 110 may include clusters 130, 135, 140. Althougheach of the datacenters 105 and 110 is shown as having three respectiveclusters, in other embodiments, each of those datacenters may have lessthan three or greater than three clusters. Further, although both thedatacenters 105 and 110 have been shown as having an equal number ofclusters, in some embodiments, those datacenters may have varying numberof clusters.

Databases that are provisioned in the database system 100 may be locatedon one or more clusters in the datacenters 105 and/or 110. For example,a database may be located on one or more clusters of either thedatacenter 105 or the datacenter 110. In some embodiments, a databasemay be located on one or more clusters of the datacenter 105, as well ason one or more clusters of the datacenter 110. For example, a firstdatabase may reside on a cluster of the datacenter 105 and a copy of thefirst database may reside on a cluster of the datacenter 110. In someembodiments, any changes made to one copy of the database may beautomatically made (e.g., carried over, either synchronously orasynchronously) to the other copies of the database. In someembodiments, a database may be provisioned as an “n-node” database,meaning that the database is to be provisioned (e.g., created orregistered) on n clusters. For example, to provision a 2-node database,the database may be provisioned on 2 clusters. The two clusters may beon the datacenter 105 only, the datacenter 110 only, or a combination ofthose datacenters (e.g., 1 cluster on each datacenter).

By virtue of being located in multiple datacenters (e.g., the datacenter105 and/or the datacenter 110) and multiple environments (e.g.,on-premise environment and/or cloud environment), the database system100 provides high availability. If either of the datacenter 105 or thedatacenter 110 goes down, the databases that are on both may be accessedfrom the other datacenter that may still be operational. Thus, thedatabase system 100 may be considered to form an Always On AvailabilityGroup (AAG). The database system 100 may also allow the databases to beaccessed from multiple locations, for example, for different purposes.

Further, the databases on the database system 100 may be managed by adatabase management system 145. In some embodiments, one instance of thedatabase management system 145 may be configured to manage databasesspread across not just multiple clusters of the same datacenter, butalso across multiple datacenters and multiple environments (e.g.,on-premise environment, cloud environment). In some embodiments, thedatabase management system 145 may reside on one datacenter (e.g., thedatacenter 105, as shown in FIG. 1 ) and may be configured to manage thedatabases located on the datacenter 105, as well as the datacenter 110.For example, the database management system 145 may be configured tomanage databases (whether source, cloned, etc.) located on the clusters115, 120, 125 of the datacenter 105. Similarly, the database managementsystem 145 may be configured to manage databases (whether source,cloned, etc.) located on the clusters 130, 135, 140 of the datacenter110. In other embodiments, the database management system 145 may beconfigured to manage databases that are located on the same datacenteras the database management system. Thus, in some embodiments, eachdatacenter may have an instance of a database management system tomanage databases located on that datacenter. In some embodiments, suchmultiple instances of the database management systems may communicatewith each other to facilitate management of the databases on the variousdatacenters.

In some embodiments, the database management system 145 may include aserver (e.g., controller) that provides database management services(e.g., database provisioning, database protection, copy data management,database patching, etc.). In some embodiments, the database managementsystem 145 may also include an agent located on each of the clusters115-140 that facilitates communication between the server of thedatabase management system and the databases residing on those clusters.In some embodiments, the database management system 145 may communicatewith a user via an API and a dashboard, and be associated with adatabase storage system, as discussed in greater detail below.

By creating databases across multiple datacenters (e.g., the datacenters105, 110) and having the database management system 145 manage thosedatabases across the multiple datacenters, the database system 100provides resiliency against datacenter and regional failures. Thedatabase system 100 also improves quality of service. For example,consider a database running on a datacenter (e.g., the datacenter 105)located in New York. If that database is being accessed by a userlocated in San Francisco, that user in San Francisco may experience asignificant latency (e.g., network latency) while accessing the databaselocated in New York. To improve performance, a cluster having a copy ofthe database may also be created in San Francisco (e.g., on thedatacenter 110). Thus, by being able to create/register databases acrossmultiple clusters and multiple datacenters, the database may becreated/registered such that copies of the same database resides on twonodes (e.g., a two-node database) where one node is located in a clusterof the datacenter located in New York and the other node is located in acluster of the datacenter located in San Francisco. Both nodes may bemanaged by the same instance of the database management system 145.Thus, by providing the ability to provision (e.g., create) databasesacross datacenters, while providing a single point of management of allthose databases, users may access the database from the node closest tothem for better quality of service.

Further, in some embodiments, cloned databases, copies of sourcedatabases, snapshots of the source and/or cloned databases, and/ortransactional logs of the source and/or cloned databases may be storedin either or both of the datacenters 105 and 110 to provide highavailability, back-up and restore capabilities, and to otherwise protectthe databases.

Referring now to FIG. 2 , an example cluster 200 in a virtual computingsystem is shown, in accordance with some embodiments of the presentdisclosure. In some embodiments, the cluster 200 may be part of ahyperconverged system. In some embodiments, the cluster 200 may be partof an on-premise environment. In some embodiments, the cluster 200 maybe part of a cloud environment (e.g., public cloud, private cloud,hybrid cloud). The cluster 200 may be a cluster on the datacenter 105 orthe datacenter 110. Thus, in some embodiments, the cluster 200 may beany of the clusters 115-140. The cluster 200 may store databases and/orthe database management system (e.g., the database management system145, 145). The database management system is discussed in greater detailbelow.

The cluster 200 includes a plurality of nodes, such as a first node 205,a second node 210, and a third node 215. Each of the first node 205, thesecond node 210, and the third node 215 may also be referred to as a“host” or “host machine.” The first node 205 includes database virtualmachines (“database VMs”) 220A and 220B (collectively referred to hereinas “database VMs 220”), a hypervisor 225 configured to create and runthe database VMs, and a controller/service VM 230 configured to manage,route, and otherwise handle workflow requests between the various nodesof the cluster 200. Similarly, the second node 210 includes database VMs235A and 235B (collectively referred to herein as “database VMs 235”), ahypervisor 240, and a controller/service VM 245, and the third node 215includes database VMs 250A and 250B (collectively referred to herein as“database VMs 250”), a hypervisor 255, and a controller/service VM 260.The controller/service VM 230, the controller/service VM 245, and thecontroller/service VM 260 are all connected to a network 265 tofacilitate communication between the first node 205, the second node210, and the third node 215. Although not shown, in some embodiments,the hypervisor 225, the hypervisor 240, and the hypervisor 255 may alsobe connected to the network 265. Further, although not shown, one ormore of the first node 205, the second node 210, and the third node 215may include one or more containers managed by a monitor (e.g., containerengine).

The cluster 200 also includes and/or is associated with a storage pool270 (also referred to herein as storage sub-system). The storage pool270 may include network-attached storage 275 and direct-attached storage280A, 280B, and 280C. The network-attached storage 275 is accessible viathe network 265 and, in some embodiments, may include cloud storage 285,as well as a networked storage 290. In contrast to the network-attachedstorage 275, which is accessible via the network 265, thedirect-attached storage 280A, 280B, and 280C includes storage componentsthat are provided internally within each of the first node 205, thesecond node 210, and the third node 215, respectively, such that each ofthe first, second, and third nodes may access its respectivedirect-attached storage without having to access the network 265.

It is to be understood that only certain components of the cluster 200are shown in FIG. 2 . Nevertheless, several other components that areneeded or desired in the cluster 200 to perform the functions describedherein are contemplated and considered within the scope of the presentdisclosure.

Although three of the plurality of nodes (e.g., the first node 205, thesecond node 210, and the third node 215) are shown in the cluster 200,in other embodiments, greater than or fewer than three nodes may beprovided within the cluster. Likewise, although only two database VMs(e.g., the database VMs 220, the database VMs 235, the database VMs 250)are shown on each of the first node 205, the second node 210, and thethird node 215, in other embodiments, the number of the database VMs oneach of the first, second, and third nodes may vary to include othernumbers of database VMs. Further, the first node 205, the second node210, and the third node 215 may have the same number of database VMs(e.g., the database VMs 220, the database VMs 235, the database VMs 250)or different number of database VMs.

In some embodiments, each of the first node 205, the second node 210,and the third node 215 may be a hardware device, such as a server. Forexample, in some embodiments, one or more of the first node 205, thesecond node 210, and the third node 215 may be an NX-1000 server,NX-3000 server, NX-6000 server, NX-8000 server, etc. provided byNutanix, Inc. or server computers from Dell, Inc., Lenovo Group Ltd. orLenovo PC International, Cisco Systems, Inc., etc. In other embodiments,one or more of the first node 205, the second node 210, or the thirdnode 215 may be another type of hardware device, such as a personalcomputer, an input/output or peripheral unit such as a printer, or anytype of device that is suitable for use as a node within the cluster200. In some embodiments, the cluster 200 may be part of a data center.Further, one or more of the first node 205, the second node 210, and thethird node 215 may be organized in a variety of network topologies. Eachof the first node 205, the second node 210, and the third node 215 mayalso be configured to communicate and share resources with each othervia the network 265. For example, in some embodiments, the first node205, the second node 210, and the third node 215 may communicate andshare resources with each other via the controller/service VM 230, thecontroller/service VM 245, and the controller/service VM 260, and/or thehypervisor 225, the hypervisor 240, and the hypervisor 255.

Also, although not shown, one or more of the first node 205, the secondnode 210, and the third node 215 may include one or more processingunits or processors configured to execute instructions. The instructionsmay be carried out by a special purpose computer, logic circuits, orhardware circuits of the first node 205, the second node 210, and thethird node 215. The processing units may be implemented in hardware,firmware, software, or any combination thereof. The term “execution” is,for example, the process of running an application or the carrying outof the operation called for by an instruction. The instructions may bewritten using one or more programming language, scripting language,assembly language, etc. The processing units, thus, execute aninstruction, meaning that they perform the operations called for by thatinstruction.

The processing units may be operably coupled to the storage pool 270, aswell as with other elements of the first node 205, the second node 210,and the third node 215 to receive, send, and process information, and tocontrol the operations of the underlying first, second, or third node.The processing units may retrieve a set of instructions from the storagepool 270, such as, from a permanent memory device like a read onlymemory (“ROM”) device and copy the instructions in an executable form toa temporary memory device that is generally some form of random accessmemory (“RAM”). The ROM and RAM may both be part of the storage pool270, or in some embodiments, may be separately provisioned from thestorage pool. In some embodiments, the processing units may executeinstructions without first copying the instructions to the RAM. Further,the processing units may include a single stand-alone processing unit,or a plurality of processing units that use the same or differentprocessing technology.

With respect to the storage pool 270 and particularly with respect tothe direct-attached storage 280A, 280B, and 280C, each of thedirect-attached storage may include a variety of types of memory devicesthat are suitable for a virtual computing system. For example, in someembodiments, one or more of the direct-attached storage 280A, 280B, and280C may include, but is not limited to, any type of RAM, ROM, flashmemory, magnetic storage devices (e.g., hard disk, floppy disk, magneticstrips, etc.), optical disks (e.g., compact disk (“CD”), digitalversatile disk (“DVD”), etc.), smart cards, solid state devices, etc.Likewise, the network-attached storage 275 may include any of a varietyof network accessible storage (e.g., the cloud storage 285, thenetworked storage 190, etc.) that is suitable for use within the cluster200 and accessible via the network 265. The storage pool 270, includingthe network-attached storage 275 and the direct-attached storage 280A,280B, and 280C , together form a distributed storage system configuredto be accessed by each of the first node 205, the second node 210, andthe third node 215 via the network 265, the controller/service VM 230,the controller/service VM 245, the controller/service VM 260, and/or thehypervisor 225, the hypervisor 240, and the hypervisor 255. In someembodiments, the various storage components in the storage pool 270 maybe configured as virtual disks for access by the database VMs 220, thedatabase VMs 235, and the database VMs 250.

Each of the database VMs 220, the database VMs 235, the database VMs 250is a software-based implementation of a computing machine. The databaseVMs 220, the database VMs 235, the database VMs 250 emulate thefunctionality of a physical computer. Specifically, the hardwareresources, such as processing unit, memory, storage, etc., of theunderlying computer (e.g., the first node 205, the second node 210, andthe third node 215) are virtualized or transformed by the respectivehypervisor 225, the hypervisor 240, and the hypervisor 255, into theunderlying support for each of the database VMs 220, the database VMs235, the database VMs 250 that may run its own operating system andapplications on the underlying physical resources just like a realcomputer. By encapsulating an entire machine, including CPU, memory,operating system, storage devices, and network devices, the database VMs220, the database VMs 235, the database VMs 250 are compatible with moststandard operating systems (e.g., Windows, Linux, etc.), applications,and device drivers. In some embodiments, one or more of the database VMs220, the database VMs 235, the database VMs 250 maybe configured to hostone or more databases. In some embodiments, one or more of the databaseVMs 220, the database VMs 235, the database VMs 250 may also beconfigured to host workloads other than or in addition to databases.

Each of the hypervisor 225, the hypervisor 240, and the hypervisor 255is a virtual machine monitor that allows a single physical servercomputer (e.g., the first node 205, the second node 210, third node 215)to run multiple instances of the database VMs 220, the database VMs 235,and the database VMs 250 with each VM sharing the resources of that onephysical server computer, potentially across multiple environments. Forexample, each of the hypervisor 225, the hypervisor 240, and thehypervisor 255 may allocate memory and other resources to the underlyingVMs (e.g., the database VMs 220, the database VMs 235, the database VM150A, and the database VM 150B) from the storage pool 270 to perform oneor more functions. In other embodiments, other types of virtual machinemonitors may be used.

By running the database VMs 220, the database VMs 235, and the databaseVMs 250 on each of the first node 205, the second node 210, and thethird node 215, respectively, multiple workloads and multiple operatingsystems may be run on a single piece of underlying hardware computer(e.g., the first node, the second node, and the third node) to increaseresource utilization and manage workflow. When new database VMs arecreated (e.g., installed) on the first node 205, the second node 210,and the third node 215, each of the new database VMs may be configuredto be associated with certain hardware resources, software resources,storage resources, and other resources within the cluster 200 to allowthose virtual VMs to operate as intended.

The database VMs 220, the database VMs 235, the database VMs 250, andany newly created instances of the database VMs may be controlled andmanaged by their respective instance of the controller/service VM 230,the controller/service VM 245, and the controller/service VM 260. Thecontroller/service VM 230, the controller/service VM 245, and thecontroller/service VM 260 are configured to communicate with each othervia the network 265 to form a distributed system 195. Each of thecontroller/service VM 230, the controller/service VM 245, and thecontroller/service VM 260 may be considered a local management systemconfigured to manage various tasks and operations within the cluster200. For example, in some embodiments, the local management system mayperform various management related tasks on the database VMs 220, thedatabase VMs 235, and the database VMs 250.

The hypervisor 225, the hypervisor 240, and the hypervisor 255 of thefirst node 205, the second node 210, and the third node 215,respectively, may be configured to run virtualization software, such as,ESXi from VMWare, AHV from Nutanix, Inc., XenServer from Citrix Systems,Inc., etc. The virtualization software on the hypervisor 225, thehypervisor 240, and the hypervisor 255 may be configured for running thedatabase VMs 220, the database VMs 235, the database VM 150A, and thedatabase VM 150B, respectively, and for managing the interactionsbetween those VMs and the underlying hardware of the first node 205, thesecond node 210, and the third node 215. Each of the controller/serviceVM 230, the controller/service VM 245, the controller/service VM 260,the hypervisor 225, the hypervisor 240, and the hypervisor 255 may beconfigured as suitable for use within the cluster 200.

The network 265 may include any of a variety of wired or wirelessnetwork channels that may be suitable for use within the cluster 200.For example, in some embodiments, the network 265 may include wiredconnections, such as an Ethernet connection, one or more twisted pairwires, coaxial cables, fiber optic cables, etc. In other embodiments,the network 265 may include wireless connections, such as microwaves,infrared waves, radio waves, spread spectrum technologies, satellites,etc. The network 265 may also be configured to communicate with anotherdevice using cellular networks, local area networks, wide area networks,the Internet, etc. In some embodiments, the network 265 may include acombination of wired and wireless communications. The network 265 mayalso include or be associated with network interfaces, switches,routers, network cards, and/or other hardware, software, and/or firmwarecomponents that may be needed or considered desirable to have infacilitating intercommunication within the cluster 200.

Referring still to FIG. 2 , in some embodiments, one of the first node205, the second node 210, or the third node 215 may be configured as aleader node. The leader node may be configured to monitor and handlerequests from other nodes in the cluster 200. For example, a particulardatabase VM (e.g., the database VMs 220, the database VMs 235, or thedatabase VMs 250) may direct an input/output request to thecontroller/service VM (e.g., the controller/service VM 230, thecontroller/service VM 245, or the controller/service VM 260,respectively) on the underlying node (e.g., the first node 205, thesecond node 210, or the third node 215, respectively). Upon receivingthe input/output request, that controller/service VM may direct theinput/output request to the controller/service VM (e.g., one of thecontroller/service VM 230, the controller/service VM 245, or thecontroller/service VM 260) of the leader node. In some cases, thecontroller/service VM that receives the input/output request may itselfbe on the leader node, in which case, the controller/service VM does nottransfer the request, but rather handles the request itself

The controller/service VM of the leader node may fulfil the input/outputrequest (and/or request another component within/outside the cluster 200to fulfil that request). Upon fulfilling the input/output request, thecontroller/service VM of the leader node may send a response back to thecontroller/service VM of the node from which the request was received,which in turn may pass the response to the database VM that initiatedthe request. In a similar manner, the leader node may also be configuredto receive and handle requests (e.g., user requests) from outside of thecluster 200. If the leader node fails, another leader node may bedesignated.

Additionally, in some embodiments, although not shown, the cluster 200may be associated with a central management system that is configured tomanage and control the operation of multiple clusters in the virtualcomputing system. In some embodiments, the central management system maybe configured to communicate with the local management systems on eachof the controller/service VM 230, the controller/service VM 245, thecontroller/service VM 260 for controlling the various clusters.

Again, it is to be understood again that only certain components andfeatures of the cluster 200 are shown and described herein.Nevertheless, other components and features that may be needed ordesired to perform the functions described herein are contemplated andconsidered within the scope of the present disclosure. It is also to beunderstood that the configuration of the various components of thecluster 200 described above is only an example and is not intended to belimiting in any way. Rather, the configuration of those components mayvary to perform the functions described herein.

Turning now to FIG. 3 , an example block diagram showing various detailsof a database management system 300 is shown, in accordance with someembodiments of the present disclosure. FIG. 3 is discussed inconjunction with FIGS. 1 and 2 . The database management system 300 isanalogous to the database management system 145. The database managementsystem 300 or portions thereof may be configured as utility software forcreating and implementing database management services. The databasemanagement system 300 is configured to facilitate provisioning (e.g.,creation), registration, protection, querying, administration of thedatabases associated therewith, etc. In other words, the databasemanagement system 300 may be configured to provide a variety of databaseservices or database management services related to the databasesassociated therewith. Thus, the database management system 300 includesa database management server 305 that is configured to receive inputfrom and provide output to a user via a dashboard 310. The databasemanagement server 305 is also associated with a database storage system315 that is configured to store one or more databases under managementof the database management system 300. In association with the dashboard310 and the database storage system 315, the database management server305 is configured to implement one or more database management servicesof the database management system. For example, the database managementserver 305 is configured to provide database provisioning services tocreate new databases and register existing databases with the databasemanagement system 300 using a database provisioning system 320. Thedatabase management server 305 is also configured to protect databasescreated or registered by the database provisioning system 320 via adatabase protection system 325. Although the database provisioningsystem 320 and the database protection system 325 are shown as separatecomponents, in some embodiments, the database provisioning system andthe database protection system may be combined, and the combinedcomponent may perform the operations of the individual components.Although not shown, the database management server 305 may include otheror additional components that provide other or additional databasemanagement services.

The database management system 300 may be installed on a database VM(e.g., the database VMs 220, the database VMs 235, the database VMs 250of FIG. 2 ). The database management system 300 may be installed via thecontroller/service VM (e.g., the controller/service VM 230, thecontroller/service VM 245, the controller/service VM 260) of the node(e.g., the first node 205, the second node 210, and the third node 215)on which the database system is to be installed. For example, anadministrator desiring to install the database management system 300 maydownload a copy on write image file (e.g., qcow or qcow2 image file) onthe controller/service VM to define the content and structure of a diskvolume to be associated with the database management system. In someembodiments, instead of a copy on write image file, another type of diskimage file, depending upon the type of underlying hypervisor, may beinstalled. Further, the administrator may create or one or more newdatabase VMs on which the database management system 300 is to reside.As part of creating the database VMs, the administrator may allocate aparticular number of virtual central processors (vCPU) to each of thedatabase VMs, define the number of cores that are desired in each vCPU,designate a specific amount of memory to each of the database VMs, andattach a database storage device (e.g., a virtual disk from the storagepool 270) with each of the database VMs. In some embodiments, at least aportion of the database storage device attached to the databasemanagement system 300 may form the database storage system 315. Theadministrator may also create a new network interface (e.g., associate avirtual local area network (VLAN), assign an Internet Protocol (“IP”)address to access the database management system 300, etc.) with each ofthe database VMs. The administrator may perform additional and/or otheractions to create the database VMs on which the database system 100resides upon creation and installation of the disk image file.

In some embodiments, the database VMs on which the database managementsystem 300 resides may all be located on a single node (e.g., one of thefirst node 205, the second node 210, and the third node 215). In otherembodiments, the database VMs on which the database management system300 resides may be spread across multiple nodes within a single cluster,or amongst multiple clusters. When spread across multiple clusters, eachof the associated multiple clusters may be configured to at leastindirectly communicate with one another to facilitate operation of thedatabase management system 300. Upon installing the database managementsystem 300, a user (e.g., the administrator or other user authorized toaccess the database system) may access the dashboard 310. The dashboard310, thus, forms the front end of the database management system 300 andthe database management server 305 and the database storage system 315form the backend of the database system.

The database management system 300 may be accessed via a computingdevice associated with the virtual computing system. In otherembodiments, instead of or in addition to being accessible via aparticular computing device, the database management system 300 may behosted on a cloud service and may be accessed via the cloud. In someembodiments, the database management system 300 may additionally oralternatively be configured as a mobile application suitable for accessfrom a mobile computing device (e.g., a mobile phone). In someembodiments, the database management system 300 and particularly thedashboard 310 may be accessed via an Application Programming Interface(“API”) 330. To access the dashboard 310 via the API 330, a user may usedesignated devices such as laptops, desktops, tablets, mobile devices,other handheld or portable devices, and/or other types of computingdevices that are configured to access the API. These devices may bedifferent from the computing device on which the database managementsystem 300 is installed.

In some embodiments and when the dashboard 310 is configured for accessvia the API 330, the user may access the dashboard via a web browser andupon entering a uniform resource locator (“URL”) for the API such as theIP address of the database management system 300 or other web address.Using the API 330 and the dashboard 310, the users may then sendinstructions to the database management server 305 and receiveinformation back from the database management server. In someembodiments, the API 330 may be a representational state transfer(“REST”) type of API. In other embodiments, the API 330 may be any othertype of web or other type of API (e.g., ASP.NET) built using any of avariety of technologies, such as Java, .Net, etc., that is capable ofaccessing the database management server 305 and facilitatingcommunication between the users and the database management server. Insome embodiments, the API 330 may be configured to facilitatecommunication via a hypertext transfer protocol (“HTTP”) or hypertexttransfer protocol secure (“HTTPS”) type request. The API 330 may receivean HTTP/HTTPS request and send an HTTP/HTTPS response back. In otherembodiments, the API 330 may be configured to facilitate communicationusing other or additional types of communication protocols. In otherembodiments, the database management system 300 may be configured foraccess in other ways.

The dashboard 310 provides a user interface that facilitateshuman-computer interaction between the users and the database managementserver 305. The dashboard 310 is configured to receive user inputs fromthe users via a graphical user interface (“GUI”) and transmit those userinputs to the database management server 305. The dashboard 310 is alsoconfigured to receive outputs/information from the database managementserver 305 and present those outputs/information to the users via theGUI of the management system. The GUI may present a variety of graphicalicons, windows, visual indicators, menus, visual widgets, and otherindicia to facilitate user interaction. In other embodiments, thedashboard 310 may be configured as other types of user interfaces,including for example, text-based user interfaces and other man-machineinterfaces. Thus, the dashboard 310 may be configured in a variety ofways.

Further, the dashboard 310 may be configured to receive user inputs in avariety of ways. For example, the dashboard 310 may be configured toreceive the user inputs using input technologies including, but notlimited to, a keyboard, a stylus and/or touch screen, a mouse, a trackball, a keypad, a microphone, voice recognition, motion recognition,remote controllers, input ports, one or more buttons, dials, joysticks,etc. that allow an external source, such as the user, to enterinformation into the database system 100. The dashboard 310 may also beconfigured to present outputs/information to the users in a variety ofways. For example, the dashboard 310 may be configured to presentinformation to external systems such as users, memory, printers,speakers, etc. Therefore, although not shown, dashboard 310 may beassociated with a variety of hardware, software, firmware components, orcombinations thereof. Generally speaking, the dashboard 310 may beassociated with any type of hardware, software, and/or firmwarecomponent that enables the database management server 305 to perform thefunctions described herein.

Thus, the dashboard receives a user request (e.g., an input) from theuser and transmits that user request to the database management server305. In some embodiments, the user request may be to request a databasemanagement service. For example, in some embodiments, the user requestmay be to request a database provisioning service. In response to theuser request for a database provisioning service, the databasemanagement server 305 may activate the database provisioning system 320.

The database management server 305, including the database provisioningsystem 320 and the database protection system 325 may be configured as,and/or operate in association with, hardware, software, firmware, or acombination thereof. Specifically, the database management server 305may include a processor 335 configured to execute instructions forimplementing the database management services of the database managementsystem 300. In some embodiments, each of the database provisioningsystem 320 and the database protection system 325 may have their ownseparate instance of the processor 335. The processor 335 may beimplemented in hardware, firmware, software, or any combination thereof.“Executing an instruction” means that the processor 335 performs theoperations called for by that instruction. The processor 335 mayretrieve a set of instructions from a memory for execution. For example,in some embodiments, the processor 335 may retrieve the instructionsfrom a permanent memory device like a read only memory (ROM) device andcopy the instructions in an executable form to a temporary memory devicethat is generally some form of random access memory (RAM). The ROM andRAM may both be part of the storage pool 270 and/or provisionedseparately from the storage pool. In some embodiments, the processor 335may be configured to execute instructions without first copying thoseinstructions to the RAM. The processor 335 may be a special purposecomputer, and include logic circuits, hardware circuits, etc. to carryout the instructions. The processor 335 may include a single stand-aloneprocessor, or a plurality of processors that use the same or differentprocessing technology. The instructions may be written using one or moreprogramming language, scripting language, assembly language, etc.

The database management server 305 may also include a memory 340. Thememory 340 may be provisioned from or be associated with the storagepool 270. In some embodiments, the memory 340 may be separate from thestorage pool 270. The memory 340 may be any of a variety of volatileand/or non-volatile memories that may be considered suitable for usewith the database management server 305. In some embodiments, the memory340 may be configured to store the instructions that are used by theprocessor 335. Further, although not shown, in some embodiments, thedatabase provisioning system 320 and the database protection system 325may each, additionally or alternatively, have their own dedicatedmemory.

Further, the database management server 305 may be configured to handlea variety of types of database engine types. For example, in someembodiments, the database management server 305 may be configured tomanage PostgreSQL, Oracle, Microsoft SQL server, and My SQL databaseengine types. In other embodiments, the database management server 305may be configured to manage other or additional database engine types.Each database that is created within or registered with the databasemanagement system 300 may be of a particular “database engine type.” Thedatabase engine type may identify the type of database management system(e.g., Oracle, PostgreSQL, etc.) of a particular database. By virtue ofcreating or registering a database with a particular database enginetype, that database is managed in accordance with the rules of thatdatabase engine type. Thus, the database management server 305 isconfigured to be operable with and manage databases associated with avariety of database engine types.

It is to be understood that only some components of the databasemanagement server 305 are shown and discussed herein. In otherembodiments, the database management server 305 may also include othercomponents that are considered necessary or desirable in implementingthe various database management services discussed herein. Similarly,the database provisioning system 320 and the database protection system325 may have components that are considered necessary or desirable inimplementing the various database management services discussed herein.

Referring still to FIG. 3 , the database storage system 315 isconfigured to store one or more databases that are either created withinthe database management system 300 or registered with the databasesystem. The database storage system 315 may include a source databasestorage 345 and a target database storage 350. The source databasestorage 345 is configured to store the original instances of thedatabases (also referred to herein as source databases) that are createdwithin or registered with the database management system 300. The targetdatabase storage 350 is configured to store the clones of the sourcedatabases (also referred to herein as cloned databases). In someembodiments, the source database storage 345 and the target databasestorage 350 may be provisioned from the storage pool 270 and may includevirtual disk storage that is associated with the database VMs (e.g., thedatabase VMs 220, the database VMs 235, the database VMs 250) on whichthe database system 100, the source databases, and the cloned databasesreside.

For example, in some embodiments, the source database storage 345 may beassociated with one or more database VMs (referred to herein as sourcedatabase VMs) and the source databases stored within the source databasestorage may be stored within the virtual disks associated with thesource database VMs. Similarly, in some embodiments, the target databasestorage 350 may be associated with one or more database VMs (referred toherein as target database VMs) and the databases stored within thetarget database storage may be stored within the virtual disksassociated with the target database VMs. In some embodiments, eachsource database VM may be configured to store one or more sourcedatabases and each target database VM may be configured to store one ormore target databases. In other embodiments, the source database storage345 and the target database storage 350 may additionally oralternatively be provisioned from other types of storage associated withthe database system 100.

Further, depending upon the size of a particular database and the sizeof the virtual disk associated with a particular source database VM, asource database may be stored in its entirety on a single sourcedatabase VM or may span multiple source database VMs. Further, as thesize of that source database increases, the source database may be movedto another source database VM, may be stored onto multiple sourcedatabase VMs, and/or additional storage may be provisioned to the sourcedatabase VMs to house the increased size of the source database.Similarly, depending upon the size of a cloned database and the size ofthe virtual disk associated with a particular target database VM, thecloned database may be stored on a single or multiple target databaseVMs. Further, as the size of the cloned database increases (e.g., byvirtue of updating the cloned database to incorporate any changes in thesource database), the cloned database may be moved to another targetdatabase VM of appropriate size, may be divided amongst multiple targetdatabase VMs, and/or additional virtual disk space may be provisioned tothe target database VM. Thus, the database storage system 315 isstructured with the flexibility to expand and adapt to accommodatedatabases of various sizes.

Additionally, in some embodiments, the databases of the source databasestorage 345 and the target database storage 350 may be stored on asingle cluster or span across multiple clusters. For example, in someembodiments, the databases of the source database storage 345 may spanacross a first set of clusters and the databases of the target databasestorage 350 may span across a second set of clusters. In someembodiments, the source databases and the cloned databases may be storedon separate designated clusters. In other embodiments, a cluster may beconfigured to store both source and cloned databases. In someembodiments, the cluster(s) on which the source databases are stored maybe part of a single datacenter and/or availability zone, while in otherembodiments, the cluster(s) on which the source databases are stored maybe part of multiple datacenters and/or availability zones. Similarly, insome embodiments, the cluster(s) on which the cloned databases arestored may be part of a single datacenter and/or availability zone,while in other embodiments, the cluster(s) on which the cloned databasesare stored may be part of multiple datacenters and/or availabilityzones. In some embodiments, multiple copies of the source databasesand/or the cloned databases may be stored. Such multiple copies may bestored on the same cluster(s) on which the source databases or thecloned databases are stored, or may be stored on different cluster(s),and such cluster(s) may be part of the same datacenter and/oravailability zone or part of different datacenters and/or availabilityzones. In some embodiments, at least some of the clusters on which thesource databases, cloned databases, and/or copies of those databases arestored may be part of an on-premise environment, while at least some ofthe clusters on which the source databases, cloned databases, and/orcopies of those databases are stored may be part of a cloud environment.

Additionally, it is to be understood that only some elements of thedatabase management system 300 are shown herein. In other embodiments,the database management system 300 may include other or additionalelements that may be needed or considered desirable to have inperforming the functions described herein. For example, in someembodiments, the database management system 300 may include one or moreagents, with each agent being stored on a cluster where a database islocated or may be located.

In some embodiments, an agent may be an intermediary between thedatabase management server 305 and the various databases on a particularcluster. In some embodiments, each agent may be configured as software,hardware, firmware, or a combination thereof. Each agent may, in someembodiments, be an autonomous software program that is configured forperforming one or more specific and approved operations. Each agent maybe associated with resources (e.g., CPU, memory, etc.) on the clusterthat they reside on. In some embodiments, each agent may be installed ona virtual machine of the cluster that they reside on. In someembodiments, each agent may be configured to perform operations undercontrol by the database management server 305.

The agents may interact with the database management server 305 to pickup work and execute. In other words, the database management server 305may send requests or instructions to one or more agents for operationsor tasks to be performed by those agents. Upon receiving theinstructions from the database management server 305, one or more of theagents that receive those instructions may perform the requested tasksor operations by calling an appropriate script based on the type of workneeded. For example, to create a clone of a database, an agent mayinvoke a cloning script. As another example, the agent may also berequested to gather transactional logs (also referred to herein as logsor log drives) for replicating and/or protecting databases. Uponcompleting their assigned task(s), the agents may respond back to thedatabase management server 305 indicating that the tasks or operationsare completed and wait to receive the next task or operation from theserver. Example operations that each agent may perform may includedatabase provisioning, database server provisioning (e.g., creating adatabase server virtual machine), database cloning, database servercloning (e.g., cloning a database server virtual machine), registering adatabase, registering a database server virtual machine, copy logoperations, resiliency and curation operations, profile (e.g., network,software, compute, etc.) creation, capturing snapshots, cleanupoperations, etc.

In some embodiments, each agent may have a process running thereon thatmay regularly (e.g., every 10 seconds) polls the database managementserver 305 for any tasks or operations to be performed. If the databasemanagement server 305 determines that a task or operation is needed, theserver may send instructions to that polling agent. In some embodiments,the agents may poll the database management server 305 by calling an APIon the database management server. In other embodiments, the agents mayuse other mechanisms to poll the database management server 305.

Turning now to FIG. 4 , an example flowchart outlining operations of aprocess 400 is shown, in accordance with some embodiments of the presentdisclosure. The process 400 may include other or additional operationsdepending upon the particular embodiment. The process 400 may be used toprovision/register (collectively referred to herein as “provision”) adatabase in the database system 100. Specifically, the process 400 maybe used to autonomously select one or more clusters by the databasemanagement system 145 to provision the database. Although the process400 is described with respect to database provisioning, in otherembodiments, the process 400 may be used for other types of databasemanagement services that require the database management system 145 toselect one or more clusters for performing the database managementservices. For example, in some embodiments, the process 400 may also beused for copy database management for protecting (e.g., cloning, backingup, restoring, etc.) database. When used for copy data management, insome embodiments, the process 400 may be used to autonomously select oneor more clusters for cloning, backing up (e.g., replicating), restoring,etc. databases. Similarly, the process 400 may be used for other typesof database management services in which selection of clusters isneeded.

When provisioning a database, in some embodiments, a user may providethe identity (e.g., name, identifier, network location, etc.) of thecluster(s) (e.g., the datacenter 105 and/or the datacenter 110) wherethe user desires to provision the database. In some embodiments, theuser selected clusters may not be entirely suitable for the database.For example, in some embodiments, the user may desire to provision adatabase of a certain size. If the user's selected clusters do not havesufficient storage to host the database of that size, the performance ofthe database may suffer (e.g., increased latency, etc.) or the databasemay be created of a smaller than desired size. In some embodiments, theuser may desire to create a database of a specific database engine type(e.g., SQL, postgres, etc.). The user's selected clusters may not beoptimal for that specific database engine type. For example, in someembodiments, each database engine type may require certain resources,protocols, processes, etc. for optimal performance. If the user'sselected clusters are not specifically configured for that specificdatabase engine, the performance of the database may suffer (or worse,the database may be unable to be provisioned or be provisioned using adatabase engine type that the user may not desire).

In some embodiments, a cost of running a database on a user selectedcluster may be more than the cost of running the database on anothercluster. In some embodiments, the location of the user selected clustermay not be optimal. For example, if the user is located in New York, butselects a cluster located in San Francisco for provisioning thedatabase, the performance of the database may suffer (e.g., haveincreased latency). Likewise, in other embodiments, the user's selectedclusters may not be optimal locations for hosting the database for otherreasons.

Thus, in some embodiments, the database management system 145 (andparticularly the database management server associated with the databasemanagement system) may be configured to autonomously select optimalclusters for provisioning a database. Specifically, in some embodiments,the database management system 145 may autonomously (e.g., without userinput identifying the clusters) select one or more optimal clusters forprovisioning a database. Upon starting at operation 405, the databasemanagement system 145 receives a user request to provision a database atoperation 410. In some embodiments, the database management system 145may receive the user request in any suitable way, for example, by way ofa user interface (e.g., the dashboard 310). Again, although FIG. 4 isdescribed for database provisioning, the process 400 may similarly beused for other database management services that require clusterselection.

Upon receiving the request to provision a database at the operation 410,the database management system 145 requests various parameters (e.g.,inputs) from the user (e.g., via the dashboard 310) at operation 415.The types of input that the database management system 145 requests maydepend upon the type of user request received at the operation 410. Forexample, in some embodiments, for a database provisioning user request,the database management system 145 may request a database engine typefrom the user that the user desires for the database being provisioned.In some embodiments, the database management system 145 may request anumber of nodes (e.g., clusters) on which the database is to beprovisioned. In some embodiments, the database management system 145 mayrequest a size of the database that is desired. In some embodiments, thedatabase management system 145 may also request a region in which thedatabase is to be provisioned. In some embodiments, the databasemanagement system 145 may also request a name for the database and/orany other details that may be needed or desired to have in provisioninga database. In some embodiments, at a minimum, the database managementsystem 145 may request a database engine type, a size of the database,and a region in which the database is to be provisioned for provisioninga database. In other embodiments, the database management system 145 mayrequest other or additional inputs. In some embodiments, to request theinputs at the operation 415, the database management system 145 maypresent one or more user interfaces (e.g., via the dashboard 310) to theuser.

At operation 420, the database management system 145 autonomouslyselects one or more optimal clusters for provisioning the database. Theselection is considered “autonomous” because the user does not identifythe clusters on which the database is to be provisioned. Rather, thedatabase management system 145 automatically selects the clusters onwhich the database is to be provisioned. In some embodiments, thedatabase management system 145 may select the clusters based at least onthe inputs received from the user at the operation 415. In someembodiments, the database management system 145 may also bepre-programmed with various criteria to help the database managementsystem select the clusters. For example, in some embodiments, thecriteria may be based upon the size of the database, the database enginetype of the database, the type of cloud environment (e.g., public cloud,private cloud, hybrid cloud) properties of the cloud, storageavailability, availability of computing resources (e.g., CPU processing,latency, input/output operations per second), region where the databaseis desired, policies applicable to the user, location of the user, costof operating the database, etc. In some embodiments, the databasemanagement system 145 may apply similar criteria to select a datacenteron which to provision the database. In some embodiments, the criteriamay be applied to the user inputs received at the operation 415,pre-defined rules, or a combination thereof. The autonomous selection ofthe clusters is discussed in greater detail in FIG. 5 below.

Thus, in some embodiments, the database management system 145 mayautonomously select whether to provision the database in the datacenter105 or the datacenter 110. In some embodiments, upon deciding whether toprovision the database in the datacenter 105 or the datacenter 110, thedatabase management system 145 may also autonomously select the clusterswithin the selected one of the datacenters on which to provision thedatabase. For example, in some embodiments, the database managementsystem 145 may first autonomously select the datacenter 105 to provisionthe database. Then, the database management system 145 may select one ormore clusters in the datacenter 105 to provision the database. In someembodiments, the clusters that are selected (in either the datacenter105 or the datacenter 110) may be selected from amongst those clustersthat are already registered with the database management system 145. Acluster is considered “registered” with the database management system145 when that cluster has been configured specifically for management bythe database management system. Registration of clusters is described ingreater detail in U.S. application Ser. No. 17/325,757, filed on May 20,2021, the entirety of which is incorporated by reference herein.

Upon selecting the datacenter(s) and/or cluster(s) for provisioning thedatabase at the operation 420, the database management system 145provisions the database at each of the selected datacenter(s) and/orcluster(s) at operation 425. In some embodiments, the databasemanagement system 145 may create a new database server virtual machinefor the database (or use an existing database server virtual machine) onthe datacenter(s)/cluster(s) on which the database is to be provisioned.A database server virtual machine is a virtual machine on which theprovisioned database resides. In other words, the database servervirtual machine may be associated with a storage device (e.g., virtualdisk(s)) and the provisioned database may be stored within that storagedevice and accessible via the database server virtual machine.

In some embodiments, to provision a database, the database managementsystem 145 may need one or more profiles. For example, in someembodiments, for each cluster, the database management system 145 mayneed a software profile, a network profile, a compute profile, and/or adatabase parameter profile to provision a database. In some embodiments,the database management system 145 may use default profiles forprovisioning the database. In other embodiments, the database managementsystem 145 may have previously stored profiles that the user desires touse for one or more of the profiles. For example, in some embodiments,the database management system 145 may identify the profiles that theuser has previously used for provisioning databases, and present thoseidentified profiles to the user. The user may either select one or moreof those profiles or provide one or more new profiles. In someembodiments, the database management system 145 may present profiles tothe user based on other considerations. For example, in someembodiments, the database management system 145 may determine suitableprofiles based on the inputs received from the user at the operation410. In other embodiments, the database management system 145 may askthe user to provide the profiles without identifying any profiles foruser review.

A software profile defines the software and operating system parametersfor the database engine type that is desired. For example, if thedatabase engine type is selected as PostgreSQL, the software profile mayinclude one or more software and operations system image profilesassociated with PostgreSQL. Each software profile may define the rulesthat are to be applied in managing the database being created. In someembodiments, based on the database engine type input by the user at theoperation 415, the database management system 145 may be configured toselect a software profile by default. In some embodiments, the user mayhave previously selected and stored one or more desired softwareprofiles for each database engine type that the user may provisiondatabases for. Thus, based on the user input of the operation 415indicating the database engine type, the database management system 145may select the software profile corresponding to that database enginetype. In some embodiments, the same software profile may be replicatedand applied to each cluster on which the database is to be provisioned.In other embodiments, the database management system 145 may useseparate software profiles for each cluster.

A network profile identifies the network location of the cluster and/orthe database server virtual machine on the cluster. In some embodiments,upon selecting the cluster(s) on which to provision the database on, thedatabase management system 145 may obtain the network locations of thosecluster(s) for the network profile. In other embodiments, the databasemanagement system 145 may select the network locations of the selectedcluster(s) in other ways. In some embodiments, the database managementsystem 145 may have previously stored network profiles selected by theuser.

A compute profile defines the size/configuration of the database server.For example, the compute profile may define the number of vCPUs, numberof cores per vCPU, and memory capacity to be associated with thedatabase server. In other embodiments, the compute profile may defineother or additional configurational parameters. In some embodiments, thecompute profile may be replicated across the various clusters. In otherembodiments, the database management system 145 may use separate computeprofiles for each cluster on which the database is to be provisioned. Insome embodiments, the database management system 145 may select adefault compute profile (e.g., based on the size of the database beingprovisioned or other factors), while in other embodiments, the databasemanagement system may use a compute profile previously received from theuser. The database parameter profile may define the custom parametersthat are applied to the database being created. Again, in someembodiments, the database management system 145 may select a defaultdatabase parameters profile or use a database parameters profilepreviously stored by the user. The database parameter profile may bereplicated across the clusters, or the user may provide a separateprofile for each cluster.

In other embodiments, the database management system 145 may receiveselection of one or more of the above profiles from the user at the timeof provisioning the database.

In some embodiments, the database management system 145 may also presentone or more user interfaces, via the dashboard 310, to request selectionof parameters for creating an instance of a database protection system(e.g., the database protection system 325) for the database beingcreated by the process 400. In some embodiments, the database protectionsystem may be created/associated after provisioning the database. Thedatabase protection system may also be referred to as a “time machine”and may be used to protect databases. To create a time machine, thedatabase management system 300 may request a name and description forthe time machine, a level of a Service Level Agreement (“SLA”), and aprotection schedule to define rules based on which the time machineoperates. Additional details of the time machine, as well as the processfor provisioning a database, are described in U.S. application Ser. No.17/337,197, filed on Jun. 2, 2021, the entirety of which is incorporatedby reference herein.

To create the database, the database management system 145 may requestone or more of the agents to perform one or more operations. In someembodiments, the database management system 145 may send the request tothe agent(s) located on the cluster(s) identified at the operation 420.In some embodiments, the agent(s) may initiate a series of operationsupon receiving the request from the database management system 145. Forexample, the agent(s) may create one or more database server virtualmachines on the respective cluster, convert the database size into anumber of virtual disks associated with that cluster and that are neededto house the database, create a database profile having a database name,description, network information, etc., attach the software andparameters of the database engine type with the database, optionallycreate an instance of the time machine, and associate the SLA andprotection schedule with the database protection system, designatestorage for storing snapshots and transactional logs, etc. Once thedatabase is created, database management services (e.g., copy datamanagement services) may be applied to the database. Further, when thedatabase is created, the time machine starts capturing snapshots andtransactional logs from the database.

The process 400 ends at operation 530. Thus, the process 400 provides aneasy and convenient mechanism to not only provision a database but alsoto improve the performance of the database. By selecting optimallocations (e.g., clusters) for creating the database, the databasemanagement system 145 ensures that the database is hosted at a locationthat maximizes the performance of the database. Upon receiving a minimalamount of information from the user, the database management system 145intelligently decides which cluster(s) to provision a database on,automatically determines one or more of the network, computer, software,or parameter profiles, and other details for provisioning the database.

Referring now to FIG. 5 , an example flowchart outlining a process 500is shown, in accordance with some embodiments of the present disclosure.The process 500 may include other or additional operations dependingupon the particular embodiment. The process 500 may be implemented bythe database management system 145 for autonomously selecting one ormore clusters for performing a database management service (e.g.,database provisioning). Upon starting at operation 505, the databasemanagement system 145 receives user inputs at operation 510. The inputsreceived at the operation 510 may be the same inputs that are receivedat the operation 415. At operation 515, the database management system145 determines any applicable policies that may have been previouslydefined. In some embodiments, the database management system 145 storepre-defined rules that the database management system may consider inmaking the autonomous selection.

For example, in some embodiments, the pre-defined rules may specify adatabase engine type, a size of the database, whether the database is tobe provisioned on the datacenter 105, datacenter 110, a public cloud, aprivate cloud, or a hybrid cloud, a number of nodes on which toprovision the database, a location of the database (e.g., dependent onthe location on the user), cost of operating the database, networklatency, and any other criteria that may be needed or considereddesirable to have for the database management system 145. In someembodiments, the pre-defined rules may be user specified. In otherembodiments, the pre-defined rules may be default settings of thedatabase management system 145. In other embodiments, the pre-definedrules may be a combination of default database management systemsettings and user defined rules. In some embodiments, no pre-definedrules may be used.

Based upon the user inputs of the operation 510 and/or the pre-definedrules of the operation 515, the database management system 145 selectsone or more datacenters at operation 520. For example, in someembodiments, one of the user inputs at the operation 510 may specify aregion in which the desired database is to be provisioned. At theoperation 520, the database management system 145 may identify one ormore suitable datacenters that fall within that region. For example, insome embodiments, if the user input specified a region of California,the database management system 145 may identify all datacenters thatfall within the California region. In some embodiments, the region maybe specified in the pre-defined rules. For example, in some embodiments,the pre-defined rules may specify provisioning a database in the NorthAmerican region. In such cases, the database management system 145 maycompare the pre-defined rules of the operation 515 with the user inputsof the operation 510 for any inconsistencies. Since California fallswithin the North American region, the database management system 145 mayselect the datacenters in California. Thus, in some embodiments, thedatabase management system 145 may select the smaller or the morespecific of the regions between the user inputs and the pre-definedrules (assuming the user inputs and pre-defined rules are notinconsistent).

In some embodiments, the pre-defined rules may be configured with afirst region and the user inputs may desire a second region that doesnot overlap with the first region. For example, in some embodiments, theuser may desire to provision a database in London and the pre-definedrules may specify a region of North America. Since London does not fallwithin North America, the database management system 145 may beconfigured to select either London or North America as the region. Insome embodiments, the database management system 145 may be configuredto prioritize the pre-defined rules during inconsistencies. In suchcases, the database management system 145 may select North America asthe region and identify suitable datacenters in North America. In someembodiments, the database management system 145 may issue a notificationto the user informing that the database cannot be provisioned in Londondue to conflict with the pre-defined rules. In other embodiments, thedatabase management system 145 may be configured to prioritize userinputs. In such cases, the database management system 145 may beconfigured to select London as the region and identify suitabledatacenters in London.

In other embodiments, the database management system 145 may select thedatacenters using other or additional criteria. For example, in someembodiments, the database management system 145 may select thedatacenter that is closer to the location from where the database is tobe accessed or where network latency is expected to be below aparticular threshold. In some embodiments, the database managementsystem 145 may select a datacenter based on a cost of operating thedatabase at that datacenter. For example, in some embodiments, thedatabase management system 145 may select a lower cost datacenter. Insome embodiments, the database management system 145 may communicatewith a cost estimation tool that provides an estimated cost of operatingthe database on various datacenters. Based on the cost estimate receivedfrom the cost estimation tool, the database management system 145 mayselect a suitable datacenter. In some embodiments, the user inputsand/or the pre-defined rules may indicate whether to provision thedatabase on cloud, and particularly public, private, or hybrid cloud, oron-premise. The database management system 145 may then select adatacenter accordingly.

In some embodiments, upon identifying suitable datacenters, the databasemanagement system 145 may determine if the pre-defined rulesspecifically request provisioning databases on cloud or on-premise. Forexample, if the database management system 145 determines that thepre-defined rules specify provisioning databases on cloud, the databasemanagement system may select the datacenters in the appropriate region(e.g., London, California, etc.) that are part of the cloud environment.If the pre-defined rules do not specify a preference between on-premiseand cloud, the database management system 145 may use other criteria todecide between on-premise and cloud. In some embodiments, the criteriato select specific clusters may result in the selection of on-premise orcloud, as discussed below.

Thus, at the operation 520, the database management system 145identifies one or more suitable datacenters on which the database may beprovisioned. At operation 525, the database management system 145determines the number of clusters on which the database is to beprovisioned. In some embodiments, the user inputs received at theoperation 510 may define the number of clusters on which the database isto be provisioned. In other embodiments, the pre-defines rules mayspecify the number of nodes on which to provision the database. In someembodiments, if the user defined rules are consistent with thepre-defined rules, the database management system 145 may select thenumber of nodes received via the user inputs. For example, if the userdesires to provision a 2-node database and the pre-defined rulesindicate allowing the user to provision a database of no more than 4nodes, since the user requested 2 nodes is a subset of the 4 nodesspecified in the pre-defined rules, the database management system 145may provision the database on 2 nodes (e.g., 2 clusters). In contrast,if the user inputs are inconsistent with the pre-defined rules, thedatabase management system 145 may be configured to make a decision. Forexample, in some embodiments, the database management system 145 may beconfigured to prioritize the user inputs. In such cases, the databasemanagement system 145 may select the number of nodes specified in theuser inputs regardless of the indication in the pre-defined rules.

On the other hand, if the database management system 145 is configuredto prioritize the pre-defined rules, the database management system mayselect the number of nodes based on the pre-defined rules. For example,if the user desires a 3-node database and the pre-defined rules indicateno more than a 2-node database, the database management system 145 mayselect no more than 2 nodes for provisioning the database. The databasemanagement system 145 may be further configured with a default number touse within the constraint of the pre-defined rules in such cases. Forexample, since the pre-defined rules indicate no more than 2 nodes inthe example above, the database management system 145 may select eithera single node or two nodes to provision the database based on anydefault values pre-programmed therein. In other embodiments, thedatabase management system 145 may be configured to select the number ofclusters in other ways.

Further, in some embodiments, the operations 520 and 525 may beperformed in any order or even simultaneously. At operation 530, thedatabase management system 145 selects one or more clusters forprovisioning the database. For example, if at the operation 525, thedatabase management system 145 identified two clusters (e.g., forprovisioning a 2-node database), then the operation 530 is configured toselect two clusters in the one or more datacenters identified at theoperation 520. The autonomous selection of the one or more clusters(e.g., the two clusters in the example above) may be based on one ormore criteria applied to the user inputs and/or the pre-defined rules.

In some embodiments, size of the database may be a criteria forselecting the one or more clusters. As an example, the databasemanagement system 145 may determine (e.g., from user input orpre-defined rules) the size of the database to be provisioned. In someembodiments, at the operation 510, the user may specify a desired sizeof the database. In some embodiments, a size of the database may bespecified in the pre-defined rules. In some embodiments, the databasemanagement system 145 may be further configured with a default size ofthe database. The database management system 145 may compare the size ofthe database in the user input and the size of the database in thepre-defined rules to decide a size of the database. As discussed above,in some embodiments, the size of the database in the user input may beconsistent with (e.g., same as or a subset of) the size defined in thepre-defined rules. If so, the database management system 145 may selectthe size defined in the user input. If inconsistent, depending uponwhether the user input or the pre-defined rules are prioritized higher,the database management system 145 may select the size noted in thehigher prioritized one of the user input or the pre-defined rules. Insome embodiments, if the pre-defined rules are selected but those rulesdon't specify a specific size (e.g., provide a size range instead), thedatabase management system 145 may use the default size of the databaseor other use other criteria to decide on the specific size whileremaining within the range of the pre-defined rules.

Upon selecting the size of the database, at the operation 525, thedatabase management system 145 may identify one or more suitableclusters in the one or more datacenters identified at the operation 520having sufficient space availability for provisioning a database of theselected size. In some embodiments, the database management system 145may add a buffer to the selected size to obtain a preferred size of thedatabase. The buffer may be a space of a pre-determined size to allowthe database to increase in size without running into space constraints.The database management system 145 may then identify one or moreclusters that have sufficient space availability for the database of thepreferred size (e.g., desired size+buffer size).

In some embodiments, database engine type may be another criteria inselecting the one or more clusters. For example, in some embodiments,the user may specify a desired database engine type at the operation 510for the database. In some embodiments, database engine type of thedatabase may be specified in the pre-defined rules. In some embodiments,the database management system 145 may be further configured with adefault database engine type of the database. The database managementsystem 145 may compare the database engine type of the database in theuser input and the database engine type of the database in thepre-defined rules to decide a database engine type of the database. Insome embodiments, the database engine type of the database in the userinput may be consistent (e.g., same as) with the database engine typedefined in the pre-defined rules. If so, the database management system145 may select the database engine type defined in the user input. Ifinconsistent (e.g., the user input and the pre-defined rules havedifferent database engine types), depending upon whether the user inputor the pre-defined rules are prioritized higher, the database managementsystem 145 may select the database engine type noted in the higherprioritized one of the user input or the pre-defined rules. Upondetermining the database engine type, the database management system 145may select one or more clusters that are configured for the determineddatabase engine type.

Similarly, the database management system 145 may apply other oradditional criteria in selecting the desired number of clusters in theone or more suitable datacenters. Further, in some embodiments, thedatabase management system 145 may be configured to apply a singlecriterion in deciding the one or more clusters. In other embodiments,database management system 145 may be configured to apply multiplecriteria in deciding the one or more clusters. In some embodiments, andparticularly in those embodiments in which multiple criteria are used,the multiple criteria may be ranked in an order of priority such thatcriterion having a higher priority is applied before a lower prioritycriterion. For example, if the criteria is based on a size of thedatabase and the database engine type, with the database engine typehaving a higher priority than the database size, then databasemanagement system 145 may first identify one or more first clusters thatare suitable for the database engine type. Then, the database managementsystem 145 may apply the database size criteria to the one or more firstclusters to identify one or more second clusters that satisfy thedatabase size criteria. If database management system 145 is unable tofind the number of desired clusters that satisfy both criteria, thedatabase management system may then attempt to find one or more clustersthat satisfy the database engine type criterion since the databaseengine type criterion is higher ranked then the database size criteria.

For example, if the database management system 145 is attempting toidentify two clusters and the criteria is prioritized as above (e.g.,database engine type being ranked higher priority than database size),the database management system may first attempt to identify clustersthat satisfy both the criteria of size and database engine type. Say,the database management system 145 finds one cluster that satisfies bothcriteria. For the remaining cluster, the database management system maythen identify a cluster that satisfies the database engine type criteria(since it is ranked higher). If the database management system does notfind a cluster that satisfies the database engine type criteria, thenthe database management system may either only provision a one nodedatabase or provision the database on another a cluster configured foranother database engine type but that satisfies the database sizecriteria.

Thus, at the operation 530, the database management system 145identifies one or more suitable clusters in the one or more suitabledatacenters. The selection of the one or more suitable datacenters andthe one or more suitable clusters in the one or more suitabledatacenters may be based on user input, pre-defined rules, and/ordefault values stored within the database management system. Althoughthe process 500 is described for provisioning, the process 500 may beapplied for other types of database management services using the userinputs suitable for that type of database management service and thepre-defined rules. The process 500 ends at operation 535.

Turning now to FIG. 6 , an example flowchart outlining operations of aprocess 600 is shown, in accordance with some embodiments of the presentdisclosure. The process 600 may include other or additional operationsdepending upon the particular embodiment. In some embodiments, as adatabase that was created using the process 400 is used, the size ofthat database may change from the size when the database was originallycreated. For example, as more data is stored is within the database, thesize of the database may increase. Thus, in some embodiments, althoughthe database may have been provisioned with a size A, the size of thatdatabase may change to a size B, which may be greater than the size A.In such cases, although the cluster on which the database is located mayhave been an optimal location for the database at the time ofprovisioning, due to the growing size of the database, that cluster mayno longer be an optimal location for the database. In other embodiments,the cluster on which the database has been provisioned may becomenon-optimal for other reasons. For example, in some embodiments, thecost of operating the database on that cluster may become higher. Insome embodiments, the network latency of operating the database maybecome higher. In some embodiments, the available resources on thecluster may change making the cluster sub-optimal.

The process 600 may be used to monitor the database and the cluster, andtake action based on the monitoring. For example, the process 600 may beused to monitor the size of the database and take action based on apattern of database usage and available space on the cluster. While theprocess 600 has been described based on monitoring a size of thedatabase, in other embodiments, the process 600 may be applied for otherconditions of the database and/or the cluster being monitored. In someembodiments, the process 600 may be implemented by the databasemanagement system 145 (and particularly by the database managementserver associated with the database management system).

Thus, the process 600 starts at operation 605 with the provisioning of adatabase on one or more clusters, as discussed in the process 400 above.At operation 610, the database management system 145 continues tomonitor the amount of space available on the cluster on which thedatabase is located. In some embodiments, the database management serverof the database management system 145 may send one or more operations tothe agent located on the cluster on which the database is hosted. Theagent may continuously or periodically check the current amount ofstorage on the cluster. Since the cluster may host other databases orapplications, the amount of space on the cluster may change even if thesize of the database is not changing. Upon detecting a change in theamount of space on the cluster, the agent may send the information tothe database management server. In some embodiments, the agent may beconfigured to reach out to the database management server only if theamount of space on the cluster reduces or reduces by a certainthreshold. In some embodiments, the agent may be configured to reach outto the database management server upon identifying any change in theamount of space available on the cluster.

At operation 615, the database management system 145 also monitors apattern of usage of the database. Specifically, the database managementsystem 145 may monitor a pattern of how the size of the databasechanges. In some embodiments, the database management server of thedatabase management system 145 may send one or more operations to theagent of the cluster on which the database is hosted to monitor thechange in size of the database relative to the original size of thedatabase when the database was provisioned. In some embodiments, whenthe agent detects a change in the size of the database (e.g., a changegreater than a predetermined threshold), the agent may notify thedatabase management server. Thus, through the agent, the databasemanagement server monitors both—the current size of the database,including the change in size, and the amount of space available on thecluster on which the database is located. In some embodiments, by virtueof continuously monitoring the size of the cluster and the size of thedatabase, the database management system 145 may determine a pattern ofhow the size of the cluster changes and how the size of the databasechanges.

At operation 620, the database management system 145 compares a currentsize of the cluster (e.g., amount of space on the cluster) with thecurrent size of the database. Specifically, at the operation 620, thedatabase management system 145 determines if the cluster is stillsuitable for the database. In some embodiments, if the databasemanagement system 145 determines that the amount of space on the clusteris less than a pre-defined percentage, the database management systemmay determine that the cluster is no longer suitable for the database.In some embodiments, the database management system 145 may compare apattern of usage of the database with the amount of space available onthe cluster. For example, if the database management system 145determines that the size of the database is changing at a rate of X %and that the database is expected to run out of space on the clusterbased on the current amount of space on the cluster, the databasemanagement system may determine that the cluster is soon going to becomeunsuitable for the database. Upon determining that the cluster hasbecome unsuitable or is expected to become unsuitable for the database,at operation 625, the database management system 145 decides anappropriate action to take.

For example, at the operation 625, in some embodiments, the databasemanagement system 145 may decide to add additional storage to thecluster on which the database is located. In some embodiments, thedatabase management system 145 may decide to move the database toanother cluster. In some embodiments, the database management system 145may notify the user that the database has run out of space or is toexpected to run out of space soon. The database management system 145may then receive input from the user instructing the database managementsystem to take specific action (e.g., move the database, add morestorage to the cluster, do nothing, etc.).

At operation 630, the database management system 145 takes the actionthat was decided at the operation 630. For example, upon determiningthat the database needs to be moved to a new location, the databasemanagement system 145 determines a new location for moving the database(e.g., using the process 500) and moves the database to that newlocation. The new location may be another cluster in the same datacenteror another datacenter. If the database management system 145 is to addmore storage to the cluster, the database management system may takeaction to facilitate adding additional storage. The process 600 ends atoperation 635.

In some embodiments, the database management system 145 may decidewhether to move the database to another datacenter and/or cluster if thedatabase management system determines that another more suitable clusteris available. In some embodiments, if the database was created on aparticular datacenter and another datacenter becomes available that iscloser to the location of access of the database, the databasemanagement system 145 may decide to move the database to the newdatacenter. For example, if the database was initially created on adatacenter in New York but was being accessed from San Francisco, if adatacenter becomes available near San Francisco, the database managementsystem 145 may move the database to that datacenter near San Franciscoto reduce network latency, particularly if the other criteria for anoptimal database are also satisfied (e.g., datacenter has suitableclusters as discussed above).

In some embodiments, the database management system 145 may move thedatabase to another cluster based on the cost of operating the databaseon the cluster. For example, if the database is provisioned on Cluster Aand the cost of operating the database on Cluster A is X, when thedatabase management system 145 determines that Cluster B has a cost ofoperation Y that is lower than X and satisfies other criteria for whichCluster A was initially selected, the database management system maymove the database to Cluster B. In other embodiments, the databasemanagement system 145 may similarly decide to move the database to otheroptimal clusters based on other conditions.

Thus, the present disclosure provides an easy and convenient mechanismto provision databases in a manner that increases the efficiency andperformance of the databases. Furthermore, the databases are monitoredto ensure that the databases continue to operate optimally afterprovisioning. If decrease in the performance of a database is identifiedor anticipated, the database may be moved to a different location wherethe database may continue to operate optimally.

Further, by selecting an appropriate location for the database, thepresent disclosure avoids the need for the user to determine the properlocation of the database. The user need not worry about whether thecluster on which the database is to be provisioned will have enoughstorage space and resources or not.

Specifically, the present disclosure provides mechanisms for databaseautomation and lifecycle management natively integrated into thedatabase management system. With the present disclosure, databases maybe defined via simple blueprints (e.g., pre-defined rules) that may beeasily created using industry standard skills and control all aspects ofthe database's lifecycle, such as provisioning, copy data management,scaling, and cleanup. These blueprints may be created through thedashboard or via code (e.g., using a Python-based DSL), includingseamless conversion. Once created, a blueprint may be easily publishedto end users, instantly transforming a complex provisioning process intoa simple one-click request. The present disclosure, thus, provides asingle language for database modeling with flexibility to integrate witheach team's tool of choice unified management and governance acrossclouds, on-premise, and datacenters, removes bottlenecks by turningspecialized operations into push-button automation, provides automatedself-service for users to easily and conveniently build and managedatabases.

The present disclosure also simplifies the set-up and management ofdatabases by incorporating all elements of each database, includingrelevant VMs, configurations, and related binaries, into an easy-to-useblueprint that is managed by the users. The blueprints may be easilymanaged (e.g., edited) via the dashboard (e.g., GUI or command lineinterface), depending on a user's preference. By making the deploymentand lifecycle management of databases both automated and easilyrepeatable, users may eliminate the hours and days currently devoted toroutine database management. In some embodiments, the present disclosuremay provide pre-defined blueprints that the user may select from tocreate the pre-defined rules. In other embodiments, the blueprints maybe custom defined from scratch or pre-defined blueprints may be modifiedto suit a user's purposes. Thus, blueprints or pre-defined rules mayprovide a framework or template to describe one or more steps forprovisioning and otherwise managing databases. Therefore, the blueprintsstreamline the provisioning and management of databases.

The present disclosure may be used to empower different groups in anorganization to provision and manage their own databases, therebyproviding powerful, database-centric self-service capabilities withrole-based access control. All activities and changes may be logged forend-to-end traceability, aiding security teams with key complianceinitiatives. The present disclosure provides the tools required tomodernize databases without losing control of policy. The presentdisclosure automates the provisioning of databases not only acrossdatacenters, but also across multi-cloud architectures, scaling bothmulti-tiered and distributed databases across different cloudenvironments. The present disclosure allows tracking and monitoring theoverall utilization and true cost of consumption at a glance providingthe information required to make deployment decisions with confidence.The present disclosure converts database management into a resilient,software-defined solution with rich machine intelligence. The result ispredictable performance, cloud-like infrastructure consumption, robustsecurity, and seamless application mobility for a broad range ofdatabases.

By autonomously selecting optimal locations for databases andcontinuously monitoring and taking actions based on the monitoring, thepresent disclosure provides intelligent resource sizing and accuratevisibility into cloud metering and chargebacks, while ensuringcontinuous optimal performance of the databases. The present disclosureallows users to gain visibility into the database usage pattern toprecisely identify performance bottlenecks. In some embodiments, thedatabase management system may leverage machine learning and artificialintelligence to provide real-time visibility in the database usagepattern across various datacenters and platforms (e.g., on-premise,cloud, multi cloud, hybrid cloud, etc.). Thus, in some embodiments, thepresent disclosure provides a unified visibility across variousdatacenters and platforms, along with automated database management.

Thus, the present disclosure empowers a user to deliver and manageproduction ready databases with push-button simplicity while preservingnative user experience. The present disclosure provides visibility intodatabase usage pattern at an aggregate and granular level. The databasemanagement system automatically identifies usage anomalies and providesoptimization of database performance by providing recommendations toeasily right-size database resources. The database management system mayuse machine intelligence to continuously suggest optimal locations fordatabases. In some embodiments, the database management system mayenable setting database usage pattern policies that continuously trackthe database usage provide alerts to users when the usage exceeds athreshold. In some embodiments, the database management system maygenerate usage report for user review. In some embodiments, the databasemanagement system may project or predict (e.g., using machinelearning/artificial intelligence) usage of a database for the upcomingpredetermined time period (e.g., next week, next months, etc.). In someembodiments, the database management system may consider historicaldatabase usage patterns in predicting future usage patterns. Forexample, in some embodiments, the database management system mayconsider the last X days of usage in projecting a usage pattern for thenext Y days.

It is to be understood that any examples used herein are simply forpurposes of explanation and are not intended to be limiting in any way.It is also to be understood that any examples used herein are simply forpurposes of explanation and are not intended to be limiting in any way.Further, although the present disclosure has been discussed with respectto memory usage, in other embodiments, the teachings of the presentdisclosure may be applied to adjust other resources, such as power,processing capacity, etc.

The herein described subject matter sometimes illustrates differentcomponents contained within, or connected with, different othercomponents. It is to be understood that such depicted architectures aremerely exemplary, and that in fact many other architectures can beimplemented which achieve the same functionality. In a conceptual sense,any arrangement of components to achieve the same functionality iseffectively “associated” such that the desired functionality isachieved. Hence, any two components herein combined to achieve aparticular functionality can be seen as “associated with” each othersuch that the desired functionality is achieved, irrespective ofarchitectures or intermedial components. Likewise, any two components soassociated can also be viewed as being “operably connected,” or“operably coupled,” to each other to achieve the desired functionality,and any two components capable of being so associated can also be viewedas being “operably couplable,” to each other to achieve the desiredfunctionality. Specific examples of operably couplable include but arenot limited to physically mateable and/or physically interactingcomponents and/or wirelessly interactable and/or wirelessly interactingcomponents and/or logically interacting and/or logically interactablecomponents.

With respect to the use of substantially any plural and/or singularterms herein, those having skill in the art can translate from theplural to the singular and/or from the singular to the plural as isappropriate to the context and/or application. The varioussingular/plural permutations may be expressly set forth herein for sakeof clarity.

It will be understood by those within the art that, in general, termsused herein, and especially in the appended claims (e.g., bodies of theappended claims) are generally intended as “open” terms (e.g., the term“including” should be interpreted as “including but not limited to,” theterm “having” should be interpreted as “having at least,” the term“includes” should be interpreted as “includes but is not limited to,”etc.). It will be further understood by those within the art that if aspecific number of an introduced claim recitation is intended, such anintent will be explicitly recited in the claim, and in the absence ofsuch recitation no such intent is present. For example, as an aid tounderstanding, the following appended claims may contain usage of theintroductory phrases “at least one” and “one or more” to introduce claimrecitations. However, the use of such phrases should not be construed toimply that the introduction of a claim recitation by the indefinitearticles “a” or “an” limits any particular claim containing suchintroduced claim recitation to inventions containing only one suchrecitation, even when the same claim includes the introductory phrases“one or more” or “at least one” and indefinite articles such as “a” or“an” (e.g., “a” and/or “an” should typically be interpreted to mean “atleast one” or “one or more”); the same holds true for the use ofdefinite articles used to introduce claim recitations. In addition, evenif a specific number of an introduced claim recitation is explicitlyrecited, those skilled in the art will recognize that such recitationshould typically be interpreted to mean at least the recited number(e.g., the bare recitation of “two recitations,” without othermodifiers, typically means at least two recitations, or two or morerecitations). Furthermore, in those instances where a conventionanalogous to “at least one of A, B, and C, etc.” is used, in generalsuch a construction is intended in the sense one having skill in the artwould understand the convention (e.g., “a system having at least one ofA, B, and C” would include but not be limited to systems that have Aalone, B alone, C alone, A and B together, A and C together, B and Ctogether, and/or A, B, and C together, etc.).

In those instances where a convention analogous to “at least one of A,B, or C, etc.” is used, in general such a construction is intended inthe sense one having skill in the art would understand the convention(e.g., “a system having at least one of A, B, or C” would include butnot be limited to systems that have A alone, B alone, C alone, A and Btogether, A and C together, B and C together, and/or A, B, and Ctogether, etc.). It will be further understood by those within the artthat virtually any disjunctive word and/or phrase presenting two or morealternative terms, whether in the description, claims, or drawings,should be understood to contemplate the possibilities of including oneof the terms, either of the terms, or both terms. For example, thephrase “A or B” will be understood to include the possibilities of “A”or “B” or “A and B.” Further, unless otherwise noted, the use of thewords “approximate,” “about,” “around,” “substantially,” etc., mean plusor minus ten percent.

The foregoing description of illustrative embodiments has been presentedfor purposes of illustration and of description. It is not intended tobe exhaustive or limiting with respect to the precise form disclosed,and modifications and variations are possible in light of the aboveteachings or may be acquired from practice of the disclosed embodiments.It is intended that the scope of the invention be defined by the claimsappended hereto and their equivalents.

What is claimed is:
 1. 1 A method comprising: receiving, by a processorof a database management system, a user request for provisioning adatabase; autonomously selecting, by the processor, a datacenter forprovisioning the database based at least on a first pre-defined rule;autonomously selecting, by the processor, at least one cluster in thedatacenter based at least on a second pre-defined rule; determining, bythe processor, a network location of each of the at least one cluster;and provisioning, by the processor, the database on each of the at leastone cluster using the network location of each of the at least onecluster.
 2. The method of claim 1, wherein the datacenter that isselected is part of an on-premise environment.
 3. The method of claim 1,wherein the datacenter that is selected is part of a cloud environment.4. The method of claim 1, further comprising: receiving, by theprocessor, a user input indicating a first region of where the databaseis to be provisioned; and selecting, by the processor, the datacenterthat is located in, or closest to, the region.
 5. The method of claim 1,further comprising: receiving, by the processor, a user input indicatinga first region of where the database is to be provisioned; identifying,by the processor, a second region from the first pre-defined rule; andselecting, by the processor, the datacenter located in (a) the firstregion upon determining that the second region encompasses the firstregion; or (b) the second region upon determining that the second regiondoes not encompass the first region.
 6. The method of claim 1, furthercomprising selecting, by the processor, the at least one cluster basedon a criteria applied to the second pre-defined rule.
 7. The method ofclaim 6, wherein the criteria comprises at least one of a size of thedatabase or a database engine type desired for the database.
 8. Themethod of claim 6, wherein the criteria comprises a database enginetype, and wherein the method further comprises: receiving, by theprocessor, a user input indicating a first database engine type for thedatabase; identifying, by the processor, a second database engine typefrom the second pre-defined rule; and selecting, by the processor, theat least one cluster that is suitable for (a) the first database enginetype upon determining that the first database engine type is same as thesecond database engine type; or (b) the second database engine type upondetermining that the first database engine type is different from thesecond database engine type.
 9. The method of claim 6, furthercomprising: receiving, by the processor, a user input indicating a firstsize of the database; identifying, by the processor, a second size ofthe database from the second pre-defined rule; and selecting, by theprocessor, the at least one cluster that (a) has an amount of availablespace for provisioning the database of the first size upon determiningthat the second size encompasses the first size; or (b) has an amount ofavailable space for provisioning the database of the second size upondetermining that the second size does not encompass the first size. 10.The method of claim 1, further comprising determining, by the processor,a number of the at least one cluster on which to provision the databasebased at least on a third pre-defined rule.
 11. The method of claim 1,further comprising: automatically monitoring, by the processor, a usagepattern of the database on each of the at least one cluster uponprovisioning; and taking action, by the processor, based upon the usagepattern.
 12. The method of claim 11, wherein the action comprises addingadditional storage to one or more of the at least one cluster or movingthe database to another cluster.
 13. The method of claim 1, furthercomprising predicting a usage pattern of the database on each of the atleast one cluster based on a historical usage pattern.
 14. A systemcomprising: a memory having computer-readable instructions storedthereon; and a processor of a database management system executing thecomputer-readable instructions to: receive a user request to provision adatabase; autonomously select a datacenter to provision the databasebased at least on a first pre-defined rule; autonomously select at leastone cluster in the datacenter based at least on a second pre-definedrule; determine a network location of each of the at least one cluster;and provision the database on each of the at least one cluster using thenetwork location of each of the at least one cluster.
 15. The system ofclaim 14, wherein the datacenter is part of an on-premise environment.16. The system of claim 14, wherein the datacenter is part of a cloudenvironment.
 17. The system of claim 14, wherein the processor furtherexecutes computer-readable instructions to: receive a user inputindicating a first region of where the database is to be provisioned;and select the datacenter that is located in, or closest to, the region.18. The system of claim 14, wherein the processor further executescomputer-readable instructions to: receive a user input indicating afirst region of where the database is to be provisioned; identify asecond region from the first pre-defined rule; and select the datacenterlocated in (a) the first region upon determining that the second regionencompasses the first region; or (b) the second region upon determiningthat the second region does not encompass the first region.
 19. Thesystem of claim 14, wherein the processor further executescomputer-readable instructions to select the at least one cluster basedon a criteria applied to the second pre-defined rule.
 20. The system ofclaim 19, wherein the criteria comprises at least one of a size of thedatabase or a database engine type desired for the database.
 21. Thesystem of claim 19, wherein the criteria comprises a database enginetype, and wherein the processor further executes computer-readableinstructions to: receive a user input indicating a first database enginetype for the database; identify a second database engine type from thesecond pre-defined rule; and select the at least one cluster that issuitable for (a) the first database engine type upon determining thatthe first database engine type is same as the second database enginetype; or (b) the second database engine type upon determining that thefirst database engine type is different from the second database enginetype.
 22. The system of claim 19, wherein the processor further executescomputer-readable instructions to: receive a user input indicating afirst size of the database; identify a second size of the database fromthe second pre-defined rule; and select the at least one cluster that(a) has an amount of available space for provisioning the database ofthe first size upon determining that the second size encompasses thefirst size; or (b) has an amount of available space for provisioning thedatabase of the second size upon determining that the second size doesnot encompass the first size.
 23. The system of claim 14, wherein theprocessor further executes computer-readable instructions to determine anumber of the at least one cluster on which to provision the databasebased at least on a third pre-defined rule.
 24. The system of claim 14,wherein the processor further executes computer-readable instructionsto: automatically monitor a usage pattern of the database on each of theat least one cluster upon provisioning; and take action based upon theusage pattern.
 25. The system of claim 24, wherein the action comprisesadding additional storage to one or more of the at least one cluster ormoving the database to another cluster.
 26. The system of claim 14,wherein the processor further executes computer-readable instructions topredict a usage pattern of the database on each of the at least onecluster based on a historical usage pattern.
 27. A non-transitorycomputer-readable medium comprising computer-readable instructionsstored thereon that when executed by a processor of a databasemanagement system cause the processor to: receive a user request toprovision a database; autonomously select a datacenter to provision thedatabase based at least on a first pre-defined rule; autonomously selectat least one cluster in the datacenter based at least on a secondpre-defined rule; determine a network location of each of the at leastone cluster; and provision the database on each of the at least onecluster using the network location of each of the at least one cluster.28. The non-transitory computer-readable medium of claim 27, wherein thedatacenter is part of an on-premise environment.
 29. The non-transitorycomputer-readable medium of claim 27, wherein the datacenter is part ofa cloud environment.
 30. The non-transitory computer-readable medium ofclaim 27, wherein the processor further executes computer-readableinstructions to: receive a user input indicating a first region of wherethe database is to be provisioned; and select the datacenter that islocated in, or closest to, the region.
 31. The non-transitorycomputer-readable medium of claim 27, wherein the processor furtherexecutes computer-readable instructions to: receive a user inputindicating a first region of where the database is to be provisioned;identify a second region from the first pre-defined rule; and select thedatacenter located in (a) the first region upon determining that thesecond region encompasses the first region; or (b) the second regionupon determining that the second region does not encompass the firstregion.
 32. The non-transitory computer-readable medium of claim 27,wherein the processor further executes computer-readable instructions toselect the at least one cluster based on a criteria applied to thesecond pre-defined rule.
 33. The non-transitory computer-readable mediumof claim 32, wherein the criteria comprises at least one of a size ofthe database or a database engine type desired for the database.
 34. Thenon-transitory computer-readable medium of claim 32, wherein thecriteria comprises a database engine type, and wherein the processorfurther executes computer-readable instructions to: receive a user inputindicating a first database engine type for the database; identify asecond database engine type from the second pre-defined rule; and selectthe at least one cluster that is suitable for (a) the first databaseengine type upon determining that the first database engine type is sameas the second database engine type; or (b) the second database enginetype upon determining that the first database engine type is differentfrom the second database engine type.
 35. The non-transitorycomputer-readable medium of claim 32, wherein the processor furtherexecutes computer-readable instructions to: receive a user inputindicating a first size of the database; identify a second size of thedatabase from the second pre-defined rule; and select the at least onecluster that (a) has an amount of available space for provisioning thedatabase of the first size upon determining that the second sizeencompasses the first size; or (b) has an amount of available space forprovisioning the database of the second size upon determining that thesecond size does not encompass the first size.
 36. The non-transitorycomputer-readable medium of claim 27, wherein the processor furtherexecutes computer-readable instructions to determine a number of the atleast one cluster on which to provision the database based at least on athird pre-defined rule.
 37. The non-transitory computer-readable mediumof claim 27, wherein the processor further executes computer-readableinstructions to: automatically monitor a usage pattern of the databaseon each of the at least one cluster upon provisioning; and take actionbased upon the usage pattern.
 38. The non-transitory computer-readablemedium of claim 27, wherein the action comprises adding additionalstorage to one or more of the at least one cluster or moving thedatabase to another cluster.
 39. The non-transitory computer-readablemedium of claim 27, wherein the processor further executescomputer-readable instructions to predict a usage pattern of thedatabase on each of the at least one cluster based on a historical usagepattern.